package com.example.pm.ending.server.mapper;

import com.example.pm.ending.server.pojo.entity.Owner;
import com.example.pm.ending.server.pojo.vo.OwnerListVO;
import com.example.pm.ending.server.pojo.vo.OwnerStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 闫鑫飞
 */
@Repository
public interface OwnerMapper {
    /**
     * 添加新业主
     * @param owner 新业主参数
     */
    void insert(Owner owner);

    /**
     * 批量添加业主
     * @param list 新业主们
     */
    void insertBatch(List<Owner>list);


    /**
     * 通过id删除业主
     * @param id 业主的id
     */
    void deleteById(Long id);
    /**
     * 批量添加业主
     * @param id 业主的id们
     */
    void deleteBatch(List<Long>id);

    /**
     * 动态修改业主信息
     * @param Owner 修改后的业主信息
     */
    void update(Owner Owner);

    /**
     * 查询业主总数
     * @return 查询到的数量
     */
    Long count();

    /**
     * 查询 身份证为param1并且业主id不为param2的数量
     * @return 查到的数量
     */
    Integer countByIdCardAndNotId(Long ownerId,String idCard);

    /**
     * 查询 手机号为param1 并且 业主id不为param2的数量
     * @param ownerId 业主id
     * @param phone 手机号
     * @return 查询到的数量
     */
    Integer countByPhoneAndNotId(Long ownerId,String phone);

    /**
     * 根据用户名查询业主数量
     * @param username 业主用户名
     * @return 查询到的数量
     */
    Integer countByUsername(String username);

    /**
     * 根据身份证查找数量
     * @param idCard 业主身份证
     * @return 查询到的数量
     */
    Integer countByIdCard(String idCard);

    /**
     * 根据手机号查询业主数量
     * @param phone 业主手机号
     * @return 查询到的数量
     */
    Integer countByPhone(String phone);

    /**
     * 业主列表
     * @return List<OwnerListVO>
     */
    List<OwnerListVO> list();

    /**
     * 根据用户名查找业主信息
     * @param username 业主用户名
     * @return OwnerStandardVO
     */
    OwnerStandardVO getOwnerByUsername(String username);

    /**
     * 根据身份证查找业主信息
     * @param idCard 业主身份证
     * @return OwnerStandardVO
     */
    OwnerStandardVO getOwnerByIdCard(String idCard);

    /**
     * 根据id查找业主信息
     * @param id 业主id
     * @return OwnerStandardVO
     */
    OwnerStandardVO getOwnerById(Long id);


}
